#include <iostream>

using namespace std;

// 1.命名空间只能写在全局区

// blue 是空间的名称
namespace blue {
    int uuid = 10001;

    int value = 1;

    string name = "BlueYui";

    void function() {
        std::cout << "Blue Namespace" << std::endl;
    }
}

// 2.命名空间是开发的, 随时可以加入新成员
namespace blue {
    int age;
}

// 3.存在匿名的命名空间(类似静态变量)
namespace {
    int value = 100;
}

void test01() {
    blue::age = 10;

    blue::function();

    cout << blue::uuid << endl;
}

void test02() {
    cout << "value = " << value << endl;
}

// 4.命名空间可以取别名
namespace yui = blue;

// 取别名的命名空间和原名用法完全一样
void test03() {
    yui::age = 30;

    yui::function();

    cout << yui::uuid << endl;
}

// 5.子类存在多个父类同名的方法时, 调用该方法时需要加上命名空间
class A {
public:
    void work() {
        cout << "Class A Work Function" << endl;
    }
};

class B {
public:
    void work() {
        cout << "Class B Work Function" << endl;
    }
};

class C : public A, public B{
public:
    void work() {
        cout << "Class C Work Function" << endl;
    }
};

void test04() {
    C object;
    object.A::work();
    object.B::work();
    object.C::work();
}

int main() {
    test01();

    test02();

    test03();

    test04();
}
